package com.bnd.common.exception;

import lombok.extern.slf4j.Slf4j;
import org.springframework.web.servlet.mvc.method.annotation.SseEmitter;

import java.io.IOException;

/**
 * SSE异常处理器
 */
@Slf4j
public class SseEmitterExceptionHandler {
    /**
     * 发送错误信息
     * @param emitter SSE连接
     * @param message 错误信息
     */
    public static void sendError(SseEmitter emitter, String message) {
        try {
            // 发送错误事件，前端可监听 error 事件
            emitter.send(SseEmitter.event()
                    // 事件名
                    .name("error")
                    // 错误信息
                    .data(message)
                    // 重新连接时间: 5秒
                    .reconnectTime(5000));

            emitter.complete(); // 结束流
        } catch (IOException e) {
            log.warn("Failed to send error event", e);
            emitter.completeWithError(e);
        }
    }
}
